<?php

class Noticias {

    private $dados;
    private $qnt = 5;
    private $offset = 0;
    private $qntResumo = 100;
    private $simbolo = '...';
    private $totalRegistros;
    public $paginacao;
    private $page;
    private $title;
    private $meta;

    public function setQuantidade($qnt) {
        $this->qnt = $qnt;
    }

    public function setPage($page) {
        $this->page = $page;
    }

    public function setOffset($offset) {
        $this->offset = $offset;
    }

    private function setDados($dados) {
        $this->dados = $dados;
    }

    public function setQntResumo($qntResumo) {
        $this->qntResumo = $qntResumo;
    }

    public function setSimbolo($simbolo) {
        $this->simbolo = $simbolo;
    }

    public function getDados() {
        return $this->dados;
    }

    public function getQuantidade() {
        return $this->qnt;
    }

    public function getTotalRegistros() {
        try {
            $sql = "SELECT
                    COUNT(*) as total
                FROM
                    conteudo
                WHERE
                    ativo = TRUE
                    AND tipo_conteudo = 'noticia'
                ORDER BY id_noticias DESC";
            $pdo = Conexao::open('site');
            $consulta = $pdo->prepare($sql);
            $consulta->execute();
            $row = $consulta->fetch(PDO::FETCH_ASSOC);
            $this->totalRegistros = $row['total'];
            return $this->totalRegistros;
        } catch (PDOException $e) {
            echo $e->getMessage();
            new Excecao($e);
        }
    }

    public function setTotalRegistros($total) {
        $this->totalRegistros = $total;
    }

    public function getPaginacao() {
        return $this->paginacao;
    }

    public function getTitle() {
        return $this->title;
    }

    public function getMetas() {
        return $this->meta;
    }

    public function executa() {

        try {
            $offset = ($this->page != 1 && $this->page != 0) ? ($this->qnt * $this->page) - $this->qnt : 0;
            $this->setOffset($offset);
            $sql_pag = "SELECT
                        *
                    FROM
                        conteudo
                    WHERE
                        ativo = TRUE AND tipo_conteudo='noticia'
                    ORDER BY dt_cadastro DESC, id_conteudo DESC";
            $sql = $sql_pag . "
                    LIMIT " . $this->qnt . "
                    OFFSET " . $this->offset;
            $pdo = Conexao::open('site');
            $pag = new Paginacao();
            $pag->setSql($sql_pag, $pdo);
            $pag->setDiv('noticias');
            $pag->setUrl('acao.php');
            $pag->setTotalRagistrosPorPagina($this->getQuantidade());
            $pag->setUrlParametros('acao', 'getNoticias');
            $pag->setPaginaAtual($this->page);
            $this->paginacao = $pag->getMontaPaginacao();
            $consulta = $pdo->prepare($sql);
            $consulta->execute();
            $dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
            foreach ($dados as $key => $value) {
                $dados[$key]['resumo'] = $this->resumo($value['conteudo']);
            }
            $this->setDados($dados);
        } catch (PDOException $e) {
            new Excecao($e);
        }
    }

    public function getNoticias() {
        $consultaNoticias = $this->getDados();
        $noticias = "
        <h2>Últimas Notícias</h2>";

        foreach ($consultaNoticias as $noticia):
            $noticias .= "<h3 id=\"h3_noticia{$noticia['id_noticias']}\" class='link-noticias'  data-id=\"noticia{$noticia['id_noticias']}\" data-titulo=\"{$noticia['titulo']}\" data-resumo=\"{$noticia['resumo']}\">{$noticia['titulo']}</h3>";
            $noticias .= "<p class=\"noticias-descritivo\" id='p_noticia{$noticia['id_noticias']}' data-id=\"noticia{$noticia['id_noticias']}\" data-titulo=\"{$noticia['titulo']}\" data-resumo=\"{$noticia['resumo']}\">{$noticia['resumo']}
                <span class=\"noticias-veja-mais\" data-id=\"noticia{$noticia['id_noticias']}\" data-titulo=\"{$noticia['titulo']}\" data-resumo=\"{$noticia['resumo']}\">Veja mais</span></p>";
            $noticias .= "<div class=\"oculto\" id=\"noticia{$noticia['id_noticias']}\" >{$noticia['conteudo']}";
            $noticias .= "<span class=\"noticias-ocultar\" data-id=\"noticia{$noticia['id_noticias']}\">Ocultar</span>";
            $noticias .= "</div><div class=\"noticias-separador\"></div>";
        endforeach;

        $noticias .= $this->getPaginacao();

        return $noticias;
    }

    public function setHeaders($id_conteudo) {
        try {
            $pdo = Conexao::open('site');
            $consultaNoticias = $pdo->prepare("SELECT * FROM conteudo WHERE id_conteudo = :id_conteudo");
            $consultaNoticias->bindParam(":id_conteudo", $id_conteudo, PDO::PARAM_INT);
            $consultaNoticias->execute();
            $noticia = $consultaNoticias->fetch(PDO::FETCH_ASSOC);

            $this->title = $noticia['titulo'];
            $this->meta = array(
                'description' => $this->resumo($noticia['conteudo']),
                'og_title' => $noticia['titulo'],
                'og_description' => $this->resumo($noticia['conteudo']),
                'og_image' => (empty($noticia['imagem_face'])) ? 'http://bcsautomacao.com.br/site_2014/img/head/facebook.png' : $noticia['imagem_face'],
                'og_url' => 'http://www.bcsautomacao.com.br/site_2014/?id_noticias=' . $noticia['id_noticias'],
                'og_type' => 'website',
                'og_title' => $noticia['titulo'],
                'og_site_name' => $noticia['titulo']
            );
        } catch (Exception $e) {
            new Excecao($e);
        }
    }

    public function getNoticia($id_noticias) {
        try {
            $pdo = Conexao::open('site');
            $consultaNoticias = $pdo->prepare("SELECT * FROM conteudo WHERE id_conteudo = :id_conteudo");
            $consultaNoticias->bindParam(":id_conteudo", $id_conteudo, PDO::PARAM_INT);
            $consultaNoticias->execute();
            $noticia = $consultaNoticias->fetch(PDO::FETCH_ASSOC);
        } catch (Exception $e) {
            new Excecao($e);
        }
        $noticias = "
        <h2>Últimas Notícias</h2>";

        $noticias .= "<h3 id=\"h3_noticia{$noticia['id_noticias']}\">{$noticia['titulo']}</h3>";
        $noticias .= "<div class=\"\" id=\"noticia{$noticia['id_noticias']}\">{$noticia['conteudo']}";
        $noticias .= "</div><div class=\"noticias-separador\"></div>";

        $noticias .= "<div class=\"col-1\">
                    <div class=\"paginacao\"><ul><li>
                    <a href='javascript:;' onclick=\"$('#noticias').load('acao.php?acao=getNoticias'); Menu.slide('#noticias');history.pushState('', 'BCS Automação', '?');\">Veja mais</a>
                    </li></ul></div></div>";

        return $noticias;
    }

    public function resumo($texto) {
        $textoResumo = strip_tags($texto);
        if (strlen($textoResumo) > $this->qntResumo) {
            return substr($textoResumo, 0, strpos($textoResumo, ' ', $this->qntResumo)) . $this->simbolo;
        } else {
            return $textoResumo . $this->simbolo;
        }
    }

}
